#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//int comp(const void* a, const void* b)
//{
//	return *(int*)a - *(int*)b;
//}
//int main()
//{
//	int arr[5] = { 7,2,3,9,1 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	qsort(arr, sz, sizeof(arr[0]), comp);
//
//	
//	int i = 0;
//	for (; i < 5; i++)
//	{
//		printf("%d", arr[i]);
//	}
//
//	return 0;
//}

//int com_p(char* a, char* b)
//{
//	return *a - *b;
//}
//
//int main()
//{
//	char arr1[5] = "bdca";
//	size_t sz1 = strlen(arr1);
//	qsort(arr1, sz1, sizeof(arr1[0]), com_p);
//	for (int i = 0; i < 4; i++)
//	{
//		printf("%c ", arr1[i]);
//	}
//	return 0;
//}


int comp(const void* a, const void* b)
{
	return *(int*)a - *(int*)b;
}

void swap(const void* a, const void* b,int w)
{
	int i = 0;
	for (; i < w; i++)
	{
		char c = *(char*)a;
		*(char*)a = *(char*)b;
		*(char*)b = c;
		((char*)a)++;
		((char*)b)++;
	}
}
int bubb(void*arr,int a,int b,int(*com)(const void*c,const void*d))
{
	int i = 0;
	for (; i < a - 1; i++)
	{
		int j = 0;
		for(;j<a-1-i;j++)
			if (com((char*)arr + j * b, (char*)arr + (j + 1) * b)>0)
			{
				swap((char*)arr + j * b, (char*)arr + (j + 1) * b, b);
			}
	}
}
int main()
{
	int A[] = { 5,6,2,1,7};
	int sz = sizeof(A) / sizeof(A[0]);
	bubb(A, sz, sizeof(A[0]), comp);
	int i = 0;
		for (; i < sz; i++)
	    {
			printf("%d", A[i]);
	    }
	return 0;
}